<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
var rotate= function(box) {
    let n = box.length;
    let m = box[0].length;
    let res = new Array(m).fill('*').map(()=>new Array(n).fill('*'));
    //将原始矩阵倒置过来放到新矩阵里。
    for(let i = 0; i < n; i++){
        for(let j = 0; j < m; j++){
            res[j][n-i-1] = box[i][j];  
            console.log(res);
        }
    }
    //console.log(res);
    //考虑到对于任意一个可下坠的石头，其碰到固定障碍物就会停下来，那么我们只需要记录下每个障碍物上面堆了几个石头就可以确定
    //每个石头翻转后的位置。
    //用k来记录每个障碍物'*'的位置，当遇到石头时，默认其下坠，腾出位置变成空'.'，这个石头堆到障碍物上面一个位置。
    //即res[--k][i] = '#'；
    for(let i = 0; i < n; i++){
        for(let j = m-1,k = m; j >= 0; j--){
            if(res[j][i] === '*') k = j;
            if(res[j][i] === '#'){
                res[j][i] = '.';
                //console.log(j+' '+k);
                res[--k][i] = '#';
            }
        }
    }
    return res;
};
console.log(rotate([["#",".","*",'.'],['#','#','*','.']]));
  </script>
</body>
</html>